※以下內容皆是新手撰寫,內容可能不完全正確
看原文書困難重重,線上的英文內容也差不多,不過看完了還是很有成就感的(吧)
這個時候就多爬一點外國論壇,多看一些英文閒書,保證英文突飛猛進~
今天要講上一篇有提到但沒講到的東西 – 運算子多載/運算子超載(operator overloading) ,這個英文術語被翻譯成很多不同的東西,不過Microsoft既然翻成運算子多載,那這裡就用運算子多載囉!
C#內建的運算子大部分都能重新定義或使其多載,運算子也能跟自定義的型別一併使用。有多載的運算子用的是operator關鍵字(operator keyword),而運算子後面要跟著要被賦予定義的符號。下面是把波浪符號(~)定義更動的例子:
public static Yee operator~ (Yee x, Yee y) {
Yee z = new Yee();
z.var1 = x.var1 * y.var1;
z.var2 = x.var2 / y.var2;
z.var3 = x.var3 + y.var3;
z.var4 = x.var4 - y.var4;
return z;
}
這樣定義完,後面用到Yee的時候用波浪符號,就會變成自己定義的功能(通常可以return某東西)。
上面講到運算子分可多載(overloadable)和不可多載(non-overloadable)兩種:
可多載:
+、-、!、~、++、--、、/、%、==、!=、<、>、<=、>=
不可多載:
&&、||、+=、-=、=、/=、%=、=、.、?:、->、new、is、sizeof、typeof
運算子多載感覺要自己多玩一玩,看那些可以那些不行(上面列的只是常用運算子當中的一部分而已,實際上更多)。
下一篇要講的是介面(interfaces),怕爆
參考資料:
(a) Tutorialspoint; C# - Operator Overloading
https://www.tutorialspoint.com/csharp/csharp_operator_overloading.htm
(b) Microsoft; 運算子多載 (C#參考)
https://docs.microsoft.com/zh-tw/dotnet/csharp/language-reference/operators/operator-overloading